package org.giovanolli.mumi.controller.business;

import java.util.Date;
import java.util.List;

import org.giovanolli.mumi.controller.AbstractModel;
import org.giovanolli.mumi.entities.GeneralObservation;
import org.giovanolli.mumi.entities.Patient;
import org.giovanolli.mumi.entities.PatientEvaluation;
import org.giovanolli.mumi.entities.Specialist;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Controller;

/**
 * The Class PatientEvaluationModel.
 */
@Controller("patientEvaluationModel")
@Scope(value = "flow", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class PatientEvaluationModel extends AbstractModel<PatientEvaluation> implements Cloneable {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 3664093136730281152L;

	/** The sort property. */
	private String sortProperty;

	private Date from;

	private Date to;

	/** The patient. */
	private Patient patient;

	/** The selectable patients. */
	private List<Patient> selectablePatients;

	/** The specialist. */
	private Specialist specialist;

	/** The selectable specialists. */
	private List<Specialist> selectableSpecialists;

	/** The evaluation. */
	private String evaluation;

	/** The edited observation. */
	private GeneralObservation editedObservation;

	/**
	 * Instantiates a new patientEvaluation model.
	 */
	public PatientEvaluationModel() {
		editedObservation = new GeneralObservation();
		return;
	}

	/**
	 * Gets the edited observation.
	 * 
	 * @return the edited observation
	 */
	public GeneralObservation getEditedObservation() {
		return editedObservation;
	}

	/**
	 * Gets the evaluation.
	 * 
	 * @return the evaluation
	 */
	public String getEvaluation() {
		return evaluation;
	}

	public Date getFrom() {
		return from;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.giovanolli.mumi.controller.AbstractModel#getPageNumber()
	 */
	public Integer getPageNumber() {
		return pageNumber;
	}

	/**
	 * Gets the patient.
	 * 
	 * @return the patient
	 */
	public Patient getPatient() {
		return patient;
	}

	/**
	 * Gets the selectable patients.
	 * 
	 * @return the selectable patients
	 */
	public List<Patient> getSelectablePatients() {
		return selectablePatients;
	}

	/**
	 * Gets the selectable specialists.
	 * 
	 * @return the selectable specialists
	 */
	public List<Specialist> getSelectableSpecialists() {
		return selectableSpecialists;
	}

	/**
	 * Gets the sort property.
	 * 
	 * @return the sort property
	 */
	public String getSortProperty() {
		return sortProperty;
	}

	/**
	 * Gets the specialist.
	 * 
	 * @return the specialist
	 */
	public Specialist getSpecialist() {
		return specialist;
	}

	public Date getTo() {
		return to;
	}

	/**
	 * Sets the edited observation.
	 * 
	 * @param editedObservation
	 *            the new edited observation
	 */
	public void setEditedObservation(GeneralObservation editedObservation) {
		this.editedObservation = editedObservation;
	}

	/**
	 * Sets the evaluation.
	 * 
	 * @param evaluation
	 *            the new evaluation
	 */
	public void setEvaluation(String evaluation) {
		this.evaluation = evaluation;
	}

	public void setFrom(Date from) {
		this.from = from;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.giovanolli.mumi.controller.AbstractModel#setPageNumber(java.lang. Integer)
	 */
	public void setPageNumber(Integer pageNumber) {
		this.pageNumber = pageNumber;
	}

	/**
	 * Sets the patient.
	 * 
	 * @param patient
	 *            the new patient
	 */
	public void setPatient(Patient patient) {
		this.patient = patient;
	}

	/**
	 * Sets the selectable patients.
	 * 
	 * @param selectablePatients
	 *            the new selectable patients
	 */
	public void setSelectablePatients(List<Patient> selectablePatients) {
		this.selectablePatients = selectablePatients;
	}

	/**
	 * Sets the selectable specialists.
	 * 
	 * @param selectableSpecialists
	 *            the new selectable specialists
	 */
	public void setSelectableSpecialists(List<Specialist> selectableSpecialists) {
		this.selectableSpecialists = selectableSpecialists;
	}

	/**
	 * Sets the sort property.
	 * 
	 * @param sortProperty
	 *            the new sort property
	 */
	public void setSortProperty(String sortProperty) {
		this.sortProperty = sortProperty;
	}

	/**
	 * Sets the specialist.
	 * 
	 * @param specialist
	 *            the new specialist
	 */
	public void setSpecialist(Specialist specialist) {
		this.specialist = specialist;
	}

	public void setTo(Date to) {
		this.to = to;
	}

}
